package com.nali.dal.dao;

import java.util.List;
import java.util.Map;

import com.nali.dal.expression.ExpressionValue;
import com.nali.dal.expression.PropertyExpression;
import com.nali.dal.expression.query.Criteria;

/**
 * IQueryDao<br>&nbsp;
 * 查询dao
 * @author sam Created on 2011-3-8
 */
public interface IQueryDao {
	/**
	 * 查询limit结果
	 */
	List<Map<String, Object>> queryForLimit(List<PropertyExpression<Criteria>> pcs, List<ExpressionValue<Criteria>> crs, int offset, int limit);
	/**
	 * 查询多个结果
	 */
	List<Map<String, Object>> queryForList(List<PropertyExpression<Criteria>> pcs, List<ExpressionValue<Criteria>> crs);
	/**
	 * 查询单一结果，如果多个则报错
	 */
	Map<String, Object> queryForObject(List<PropertyExpression<Criteria>> pcs, List<ExpressionValue<Criteria>> crs);
	/**
	 * 查询单一结果，queryForObject的不报错版本
	 */
	Map<String, Object> queryOne(List<PropertyExpression<Criteria>> pcs, List<ExpressionValue<Criteria>> crs);
	/**
	 * 计算总数
	 */
	long count(List<PropertyExpression<Criteria>> pcs, List<ExpressionValue<Criteria>> crs);
}
